Conventional approaches to the fabrication of microcontrollers and programmable devices generally require the fabrication of a microcontroller and a programmable device as discrete independent packages or components. In applications where a limited number of gates are required, the overhead (e.g., the additional processing steps) associated with fabricating a programmable device such as a complex programmable logic device (CPLD), a programmable logic device (PLD) or a programmable logic array (PLA), in addition the overhead associated with fabricating a discrete microcontroller, makes the overall design impractical. While previous approaches may implement a microcontroller interface external to the programmable device, conventional approaches have not implemented a programmable device on the same chip as the a microcontroller.